// 全局图表实例变量
let mapChart = null;
let chinaChart = null;
let countryBarChart = null;
let provincePieChart = null;
let ageChart = null;
let trendChart = null;

// 初始化图表实例的全局函数
function initChartInstances() {
    console.log('初始化图表实例');
    
    const chartConfigs = [
        { key: 'mapChart', selector: '#worldMap' },
        { key: 'chinaChart', selector: '#chinaMap' },
        { key: 'countryBarChart', selector: '#countryBarChart' },
        { key: 'provincePieChart', selector: '#provincePieChart' },
        { key: 'ageChart', selector: '#ageChart' },
        { key: 'trendChart', selector: '#trendLine' }
    ];
    
    chartConfigs.forEach(config => {
        const element = document.querySelector(config.selector);
        if (element && element.offsetWidth > 0) {
            window[config.key] = echarts.init(element);
            console.log(`已初始化 ${config.key} 图表实例`);
        }
    });
}

// 模块化设计：抖音大数据观测平台
(function() {
    // ========== 工具函数模块 ==========
    const utils = {
        // DOM查询简写
        $: function(selector) {
            return document.querySelector(selector);
        },
        
        // 随机数生成
        random: function(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        },
        
        // 防抖函数
        debounce: function(func, wait) {
            let timeout;
            return function executedFunction(...args) {
                const later = () => {
                    clearTimeout(timeout);
                    func(...args);
                };
                clearTimeout(timeout);
                timeout = setTimeout(later, wait);
            };
        },
        
        // 日志工具
        log: function(message, level = 'info') {
            const timestamp = new Date().toLocaleTimeString();
            console[level](`[Dashboard ${timestamp}] ${message}`);
        },
        
        // 错误处理包装器
        safeExecute: function(func, errorMessage = '操作执行失败', ...args) {
            try {
                return func(...args);
            } catch (error) {
                this.log(`${errorMessage}: ${error.message}`, 'error');
                console.error(error);
                return null;
            }
        }
    };
    
    // ========== 数据模块 ==========
    const dataModule = {
        // 原始访问量数据
        originalVisitData: {
            'China': 98542,
            'USA': 68234,
            'India': 45123,
            'Japan': 23456,
            'Brazil': 19876,
            'Russia': 15678,
            'Germany': 13456,
            'UK': 11234,
            'France': 9876,
            'Australia': 8765
        },
        
        // 地图数据
        mapData: [],
        
        // 省份访问量数据
        provinceVisitData: []
    };
    
    // 暴露dataModule到全局作用域
    window.dataModule = dataModule;
    
    // ========== 图表模块 ==========
    const chartModule = {
        // 图表实例引用（使用全局变量）
        instances: {
            get mapChart() { return window.mapChart; },
            set mapChart(value) { window.mapChart = value; },
            get chinaChart() { return window.chinaChart; },
            set chinaChart(value) { window.chinaChart = value; },
            get countryBarChart() { return window.countryBarChart; },
            set countryBarChart(value) { window.countryBarChart = value; },
            get provincePieChart() { return window.provincePieChart; },
            set provincePieChart(value) { window.provincePieChart = value; },
            get ageChart() { return window.ageChart; },
            set ageChart(value) { window.ageChart = value; },
            get trendChart() { return window.trendChart; },
            set trendChart(value) { window.trendChart = value; }
        },
        
        // 图表配置选项
        options: {},
        
        // 初始化图表实例（使用全局函数）
        initInstances: function() {
            utils.log('调用全局图表实例初始化函数');
            initChartInstances();
        },
        
        // 初始化所有图表
        initAllCharts: function() {
            utils.log('开始初始化所有图表');
            
            // 初始化数据
            // 跳过地图数据初始化，避免地图文件不存在的错误
            
            // 初始化图表实例
            this.initInstances();
            
            utils.log('图表初始化完成');
            return true;
        }
    };
    
    // ========== 初始化模块 ==========
    function setupInitialization() {
        console.log('设置初始化逻辑');
        
        // 延迟尝试初始化
        setTimeout(function initialAttempt() {
            console.log('尝试初始化仪表盘');
            
            // 尝试初始化所有图表
            const chartsInitialized = chartModule.initAllCharts();
            
            if (chartsInitialized) {
                console.log('仪表盘初始化成功');
            } else {
                console.warn('仪表盘初始化失败，将在2秒后重试');
                setTimeout(initialAttempt, 2000);
            }
        }, 1000);
    }
    
    // 初始化
    setupInitialization();
    
    // 响应式重绘
    window.addEventListener('resize', utils.debounce(function() {
        console.log('窗口大小变化，重新绘制图表');
    }, 300));
})();